iT邦幫忙

1

python 好用套件:利用 glob 抓取路徑下檔案名稱

yaxuan 2021-09-11 17:12:3940113 瀏覽
  • 分享至 

  • xImage
  •  

前言

今天這篇文章要分享我自己在抓取某個路徑下所有檔案時,很喜歡用的一個套件,覺得它使用彈性滿高,有滿好理解的!自從知道有這個套件後,之後抓檔名都沒有換過其他方式了 XD

glob 套件

根據官方文檔,有這三種用法:
glob.glob(pathname, *, recursive=False)
glob.iglob(pathname, *, recursive=False)
glob.escape(pathname)

這邊只先介紹 glob.glob,其他應用有需要時可以再延伸研究

範例

1. 首先,為了示範方便,先來建立一些資料夾

import os
import glob

# Create directory
os.mkdir(os.path.join("Folder_1")
os.mkdir(os.path.join("Folder_1", "File_1.txt"))
os.mkdir(os.path.join("Folder_1", "File_2.csv"))
os.mkdir(os.path.join("Folder_1", "File_3.txt"))

# 備註:這邊其實都是建立資料夾,只是為了示範用,所以加上檔名,實際上並非檔案

2. 試著利用 glob.glob 來讀取檔案路徑

先來解釋一下,參數 pathname 用到的一些符號:

  • * 的意思就是匹配所有的內容
  • 可以自己設定要讀什麼檔案類型,像是:.txt, .csv
  • 也可以再進一步針對檔名的變化設定,像是:[1-2] 就是匹配 1 到 2 之間的整數數值

延伸學習:如何使用正規表達式

# Find pathnames under the specified directory 

# 取得 Folder_1 這層裡面,所有東西的路徑
print(glob.glob(os.path.join("Folder_1", "*"))) 

# 取得 Folder_1 這層裡面,結尾是 .txt 的路徑
print(glob.glob(os.path.join("Folder_1", "*.txt")))

# 取得 Folder_1 這層裡面,結尾是 .csv 的路徑
print(glob.glob(os.path.join("Folder_1", "*.csv")))

# 取得 Folder_1 這層裡面,檔名中有 1 或 2 的東西的路徑
print(glob.glob(os.path.join("Folder_1", "*[1-2]*")))


# 備註
# 這邊利用 os.path.join 來連接指定字串形成路徑,因為不同系統下的分隔符號可能不同
# 可以用 os.sep 來查看,在設定路徑時,也直接用符合的分隔符號來串連

輸出:

['Folder_1/File_1.txt', 'Folder_1/File_3.txt', 'Folder_1/File_2.csv']
['Folder_1/File_1.txt', 'Folder_1/File_3.txt']
['Folder_1/File_2.csv']
['Folder_1/File_1.txt', 'Folder_1/File_2.csv']

結語

透過 glob.glob 結合正規表達式,就可以輕鬆的特定一些篩選條件,抓出想要的檔案路徑

References


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言